// pages/biz-manage/admins.js
const BizService = require('../../services/biz');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 当前用户信息
    currentAdminInfo: null,
    currentUserId: null,
    bizInfo: {},
    
    // 管理员列表
    adminList: [],
    
    // 弹窗状态
    showAddModal: false,
    showDetailModal: false,
    showRolePicker: false,
    showRemoveDialog: false,
    
    // 表单数据
    addForm: {
      phone: '',
      role: 'normal'
    },
    
    // 角色选择器数据
    roleColumns: [
      { text: '普通管理员', value: 'normal' },
      { text: '超级管理员', value: 'super' }
    ],
    
    // 选中的管理员
    selectedAdmin: null,
    
    // 提交状态
    submitting: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadPageData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时刷新数据
    this.loadAdminList();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 加载页面数据
   */
  async loadPageData() {
    try {
      // 获取当前用户的管理员信息
      const adminResult = await BizService.getCurrentAdminInfo({
        showLoading: true
      });

      if (adminResult.success) {
        this.setData({
          currentAdminInfo: adminResult.data.admin,
          currentUserId: adminResult.data.admin.id,
          bizInfo: adminResult.data.biz
        });
      } else {
        wx.showToast({
          title: adminResult.message,
          icon: 'none'
        });
        return;
      }

      // 加载管理员列表
      await this.loadAdminList();
    } catch (error) {
      console.error('加载页面数据失败:', error);
      wx.showToast({
        title: '加载数据失败',
        icon: 'none'
      });
    }
  },

  /**
   * 加载管理员列表
   */
  async loadAdminList() {
    try {
      const result = await BizService.getBizAdmins({
        showLoading: false
      });

      if (result.success) {
        this.setData({
          adminList: result.data || []
        });
      } else {
        wx.showToast({
          title: result.message,
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('加载管理员列表失败:', error);
      wx.showToast({
        title: '加载管理员列表失败',
        icon: 'none'
      });
    }
  },

  /**
   * 显示添加管理员弹窗
   */
  showAddAdminModal() {
    this.setData({
      showAddModal: true,
      addForm: {
        phone: '',
        role: 'normal'
      }
    });
  },

  onPhoneInput(event) {
    let addForm = this.data.addForm;
    addForm.phone = event.detail;
    this.setData({
      addForm: addForm
    });
  },

  /**
   * 关闭添加管理员弹窗
   */
  closeAddModal() {
    this.setData({
      showAddModal: false
    });
  },

  /**
   * 显示角色选择器
   */
  showRolePickerModal() {
    console.log('showRolePickerModal');
    this.setData({
      showRolePicker: true
    });
  },

  /**
   * 关闭角色选择器
   */
  closeRolePicker() {
    this.setData({
      showRolePicker: false
    });
  },

  /**
   * 角色选择确认
   */
  onRoleConfirm(event) {
    const { value } = event.detail;
    let addForm = this.data.addForm;
    addForm.role = value.value;
    this.setData({
      addForm: addForm,
      showRolePicker: false
    });
  },

  /**
   * 提交添加管理员
   */
  async submitAddAdmin() {
    const { phone, role } = this.data.addForm;
    
    if (!phone.trim()) {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      });
      return;
    }

    if (!/^1[3-9]\d{9}$/.test(phone.trim())) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }

    this.setData({
      submitting: true
    });

    try {
      const result = await BizService.addBizAdmin({
        phone: phone.trim(),
        role,
        showLoading: false
      });

      if (result.success) {
        wx.showToast({
          title: '添加成功',
          icon: 'success'
        });
        
        this.closeAddModal();
        this.loadAdminList();
      } else {
        wx.showToast({
          title: result.message,
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('添加管理员失败:', error);
      wx.showToast({
        title: '添加失败',
        icon: 'none'
      });
    } finally {
      this.setData({
        submitting: false
      });
    }
  },

  /**
   * 显示管理员详情
   */
  showAdminDetail(event) {
    const admin = event.currentTarget.dataset.admin;
    this.setData({
      selectedAdmin: admin,
      showDetailModal: true
    });
  },

  /**
   * 关闭管理员详情弹窗
   */
  closeDetailModal() {
    this.setData({
      showDetailModal: false
    });
  },

  /**
   * 确认删除管理员
   */
  confirmRemoveAdmin() {
    this.setData({
      showRemoveDialog: true
    });
  },

  /**
   * 关闭删除确认弹窗
   */
  closeRemoveDialog() {
    this.setData({
      showRemoveDialog: false
    });
  },

  /**
   * 删除管理员
   */
  async removeAdmin() {
    const { selectedAdmin } = this.data;

    if (!selectedAdmin) {
      return;
    }

    try {
      const result = await BizService.removeBizAdmin({
        adminId: selectedAdmin.id,
        showLoading: true
      });

      if (result.success) {
        wx.showToast({
          title: '删除成功',
          icon: 'success'
        });
        
        this.closeDetailModal();
        this.closeRemoveDialog();
        this.loadAdminList();
      } else {
        wx.showToast({
          title: result.message,
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('删除管理员失败:', error);
      wx.showToast({
        title: '删除失败',
        icon: 'none'
      });
    }
  },

  /**
   * 格式化时间
   */
  formatTime(timestamp) {
    if (!timestamp) return '';
    
    const date = new Date(timestamp * 1000);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hour = String(date.getHours()).padStart(2, '0');
    const minute = String(date.getMinutes()).padStart(2, '0');
    
    return `${year}-${month}-${day} ${hour}:${minute}`;
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadAdminList().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '商家管理员管理',
      path: '/pages/biz-manage/admins'
    };
  }
})